# coding: utf-8
from qt import *

def isInt( str ):
    ok = 1
    try:
        num = int(str)
    except ValueError:
        ok = 0
    return ok


def style(s):
    tagI = """<font color="#ff0000">"""
    tagF = """</font><br />"""
    return tagI + s + tagF


def addJob(elements, job,duration,precedence,error ):

    if not job.isalnum():
        error.setText(style("Eso no es un nombre de tarea."))
        return False
    if elements.lbJobs.findItem(job):
        error.setText(style("La tarea ya fue cargada."))
        return False
    
    if (not isInt(duration)) or duration <= 0:
        error.setText(style("Utilice un entero positivo distinto de cero en la duracion."))
        return False


    
    precElements = precedence.split(",")
    bad = False
    for e in precElements:
        if not elements.lbJobs.findItem(e):
            bad = True
    if bad and precedence != '-':
        error.setText(style("Precedencia invalida: debe ser una tarea ya cargada o debe ser igual a -"))
        return False


    elements.lbJobs.insertItem(job)
    elements.lbDurations.insertItem(duration)
    elements.lbPrecedences.insertItem(precedence)
    return True

def generarDiagrama(elements):
    import algo    
    import clases

    tareas = {}
    for  i in range(elements.lbDurations.count()):
        t = clases.Tarea(
            elements.lbJobs.item( i ).text().ascii(),
            elements.lbDurations.item( i ).text().ascii(),
            elements.lbPrecedences.item( i ).text().ascii())
        tareas[t.name] = t
    if len(tareas) > 0:
        nodos = algo.crearNodos(tareas)
        #algo.imprimirNodos(nodos)
        algo.dibujarNodos(nodos)
        imagen = QPixmap('grafico.jpg')
        elements.pixmapImagen.setPixmap(imagen)
    else:
        elements.pixmapImagen.setPixmap(QPixmap())
        
    return False
    
